package com.yzqp.generator.util.generator.filter.map.add;

import com.yzqp.generator.bean.TableColumnInfo;
import com.yzqp.generator.prop.java.GeneratorBaseProp;
import com.yzqp.generator.util.HumpNameUtil;
import com.yzqp.generator.util.generator.filter.map.GeneratorMapFilter;

import java.util.List;
import java.util.Map;


/**
 * 生成器的 map 的过滤器
 * <p>
 * 添加java类名 和 所在的包
 */
public class AddJavaClassNameAndLocationPackageMapFilter implements GeneratorMapFilter {

    GeneratorBaseProp generatorBaseProp;

    // 最后的包名  bean  service form
    private String lastPackage;

    // 后缀 例如 Bean Service SaveForm
    private String postfix;

    public AddJavaClassNameAndLocationPackageMapFilter(String lastPackage, String postfix, GeneratorBaseProp generatorBaseProp) {
        this.lastPackage = lastPackage;
        this.postfix = postfix;
        this.generatorBaseProp = generatorBaseProp;
    }

    @Override
    public Map<String, Object> filter(Map<String, Object> map, List<TableColumnInfo> tableColumnInfoList) {
        TableColumnInfo columnItem = tableColumnInfoList.get(0);
        // 基础类名
        map.put("baseClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName()));
        // 基础类名
        map.put("className", HumpNameUtil.getJavaClassName(columnItem.getTableName(), postfix));
        // java bean 所在的包
        map.put("locationPackage", generatorBaseProp.getBaseJavaPackage() + "." + lastPackage);
        // java bean 所在的包
        map.put("baseJavaPackage", generatorBaseProp.getBaseJavaPackage());
        // 基础Bean类名
        map.put("beanClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getBeanName()));
        // 基础server类名
        map.put("mapperClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getMapperName()));
        // 基础server类名
        map.put("serviceClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getServiceName()));
        // 基础saveForm类名
        map.put("saveFormClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getSaveFormName()));
        // 基础pageForm类名
        map.put("pageFormClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getPageFormName()));
        // 基础vo类名
        map.put("voClassName", HumpNameUtil.getJavaClassName(columnItem.getTableName(), generatorBaseProp.getVoName()));
        return map;
    }
}
